package com.tomowork.utils;



import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class PageUtil<T> {
    private List<T> list; //查询的结果
    private int allRow ; //总记录
    private int pageSize ;//每页显示多少记录,
    private int pageNum ; //当前页的页码，这是一个特定的值，有前端传入，或者直接赋值

   private int length=0 ;
    public PageUtil(){}
//    表示导航条的长度
    public PageUtil(int length){
        this.length = length ;
    }



    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getAllRow() {
        return allRow;
    }

    public void setAllRow(int allRow) {
        this.allRow = allRow;
    }

    public int getAllPageNum() { //计算出总页码
        return (allRow+pageSize-1)/pageSize;
    }


    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
    //计算前一页，和后一页
    public boolean isHasNext() {
        if(pageNum<getAllPageNum()){
            return true ;
        }
        return false;
    }


    public boolean isHasPre() {
        if(pageNum>1){
            return true ;
        }
        return false;
    }
//    设置当前页的导航条
    public List<Integer> getPageNav(){
       List<Integer> num = new ArrayList<>() ;
        if(this.length>0){
            int seed = this.length/2 ;
            if(pageNum-seed>0&&pageNum+seed<getAllPageNum()){
                int dev = pageNum-seed ;
                for(int k=0;k<this.length;k++){
                    num.add(dev++) ;
                }
            }
            if(pageNum-seed<=0){
                for(int k=0;k<this.length;k++){
                    num.add(k+1);
                }
            }
            if(pageNum+seed>=getAllPageNum()){
                int i = this.getAllPageNum() - this.length;
                for(int k=0;k<this.length;k++){
                    num.add(++i);
                }
            }
        }
        return num ;
    }



}
